9.2 Dvojvetvová selekcia - IF ... THEN ... ELSE
Dvojvetvová selekcia znamená, že v závislosti od podmienky sa vykoná jedna činnosť (ak je podmienka splnená) alebo druhá (ak podmienka nie je splnená) a potom sa pokračuje príkazmi nasledujúcimi za selekciou.
Jacksonov, vývojový diagram a Pascalovský kód dvojvetvovej selekcie sú nasledovné:
 |
Význam príkazu IF ... THEN ... ELSE je: AK ... POTOM ... INAK. Ak podmienka F1 je pravdivá, potom as vykoná príkaz U1 inak sa vykoná príkaz U2. Prirodzene príkazy U1 a U2 môžu byť aj zložité.
Pozor! Bodkočiarka je iba za príkazom selekcie a nikdy nie pred ELSE !!!
Ak napíšete bodkočiarku pred ELSE, potom selekcia bude jednovetvová a služobné slovo ELSE nemá príslušné IF - bude to syntaktická chyba.
Úloha
Vypíšte väčšie z dvoch načítaných čísel A a B!
|
Jacksonov diagram úlohy:
9.3 Do seba vložené príkazy IF
V každej vetve selekcie je jeden príkaz. Týmto príkazom môže byť ľubovolný príkaz, teda aj selekcia. Ale pozor, ak takým príkazom bude ďalšia selekcia, potom dávajte veľký pozor na štruktúru programu. Vždy musíme prehľadne a jednoznačne vidieť štruktúru programu!
Treba si uvedomiť, že každé ELSE patri k najbližšiemu predchádzajúcemu IF! Ak to chceme zmeniť, musíme použiť zátvorky Begin a End. Pri zložitejších programoch v týchto príkazoch doporučujeme používať vždy Begin a End.
9.4 Viacvetvová selekcia - IF ... THEN ... ELSE IF
Pre prípad, keď vetva ELSE v dvojvetvovej selekcii je tiež selekciou, sa zaviedol tento pomocný príkaz (samozrejme dalo by sa to riešiť aj pomocou vložených selekcií). Pracuje to nasledujúcim spôsobom: ak prvá podmienka je splnená - vykoná sa patričný príkaz a ostatné podmienky sa neoverujú, v opačnom prípade sa overuje druhá podmienka - ak je splnená, potom sa vykoná za ňou nasledujúci príslušný príkaz a zvyšné podmienky (ak sú) sa už neoverujú atď.
Jacksonov diagram, vývojový diagram a Pascalovský kód tejto viacvetvovej selekcie vyzerajú nasledovne:
 |
V Jacksonovom diagrame nad poslednú "krabičku" nepíšeme nič - je to vetva ELSE.
Doporučujeme poradie podmienok napísať tak, aby častejšie pravdivé podmienky boli skôr uvedené (ak také sú).
9.5 Viacvetvová selekcia - CASE
Pomocou príkazu ELSE IF dokážeme vyriešiť ľubovolnú selekciu. V Pascale existuje jeden elegantný spôsob riešenie selekcií. Jeho nedostatkom je to, že nie je univerzálnym a teda jeho použitie je obmedzené. Je to príkaz CASE (znamená - PRÍPAD). Pomocou príkazu CASE môžeme vyberať z danej množiny hodnôt. Jeho tvar je nasledujúci:
CASE | výraz Of |
| hodnota (hodnoty) : príkaz ; |
| hodnota (hodnoty) : príkaz ; |
| ... |
| Else príkaz |
End ; | |
Vetvu ELSE môžeme vynechať a každý príkaz môže byť zložitým (v "zátvorkách" Begin a End). Medzi kľúčovými slovami CASE a OF musí stáť výraz výsledkom ktorého je prvok ordinárneho typu. Hodnota je konkrétny prvok daného typu. Uvádzať môžeme aj viacero prvkov oddelené od seba čiarkou alebo aj interval hodnôt, napr.
10..20,22,40..53,100,200: 'A'..'K','N','P'..'X':
Pozor! Výraz musí po vyhodnotení nadobudnúť hodnotu, typ ktorej je orinárny - napr. nemôže byť reálnym číslom.
Pozor na podmienky, ktoré navzájom nie sú nezávislé!
|